网上说遍历窗口控件有两种方法:

1 使用EnumChildWindows,没有深究,

学习网址如下:http://blog.sina.com.cn/s/blog_60ac1c4b010116uj.html

2 使用::FindWindowEx和GetWindow组合

下面只说第二种方法,

首先根据标题获取窗口的句柄,

HWND hWnd=::FindWindow(NULL,“zhang001”);

findwindow原型:

FindWindow(

  lpClassName,{窗口的类名}

  lpWindowName: PChar {窗口的标题}

): HWND;              {返回窗口的句柄; 失败返回 0}

根据窗口句柄获取窗口上的一个Edit控件,

HWND hChild = ::FindWindowEx(hWnd,NULL,_T("Edit"),NULL);

//FindWindowEx 比 FindWindow 多出两个句柄参数:

  FindWindowEx(

  Parent: HWND;    {要查找子窗口的父窗口句柄}

  Child: HWND;      {子窗口句柄}

  ClassName: PChar; {}

  WindowName: PChar {}

): HWND; {如果Parent是 ,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口;如果是HWND_MESSAGE,函数仅查找所有消息窗口;子窗口必须是Parent窗口的直接子窗口;如果Child是0,查找从Parent的第一个子窗口开始;如果Parent和Child同时是0,则函数查找所有的顶层窗口及消息窗口.}

这样可以获取窗口上的第一个Edit控件,第几个控件应该是以ID的大小编号的

要根据第一个Edit控件找到下一个Edit控件,使用GetWindow。

Getwindow的函数原型如下:

HWND GetWindow(HWND hWnd,UNIT nCmd);

参数:

hWnd:窗口句柄。要获得的窗口句柄是依据nCmd参数值相对于这个窗口的句柄。

nCmd:说明指定窗口与要获得句柄的窗口之间的关系。

GetWindow()具体的使用方法见:http://blog.163.com/sdzhangyuyin@126/blog/static/1384137482014684254551/

hChild = ::GetWindow(h,GW_HWNDNEXT);//获取窗口的下一个控件

HWND hwndChild=::GetWindow(m_hWnd,GW_CHILD); //列出所有控件

while(hwndChild){

  .....

  .....

  hwndChild=::GetWindow(hwndChild, GW_HWNDNEXT);

}